package com.zhuodewen.ai.dto.langchain4j;

import dev.langchain4j.agent.tool.Tool;
import lombok.extern.slf4j.Slf4j;

/**
 * 自定义AI工具
 */
@Slf4j
public class LangChain4JTool {

    /**
     * 加法
     * 注意:
     *      [1]name必须指定, 且需遵从正则表达式:^[a-zA-Z0-9_-]+$ , 如果未提供则方法的名称将用作工具的名称
     *      [2]一定要记得增加日志,否则无法从日志看出是否调用了工具
     *
     * @param a
     * @param b
     * @return
     */
    @Tool(name = "add")
    double add(int a, int b) {
        log.info("add:{},{},result:{}", a, b, a + b);
        return a + b;
    }

    /**
     * 平方根
     * 注意:
     *      [1]name必须指定, 且需遵从正则表达式:^[a-zA-Z0-9_-]+$
     *      [2]一定要记得增加日志,否则无法从日志看出是否调用了工具
     *
     * @param x
     * @return
     */
    @Tool(name = "squareRoot")
    double squareRoot(double x) {
        log.info("squareRoot:{}, result:{}", x, Math.sqrt(x));
        return Math.sqrt(x);
    }

}
